<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>NPanday - NPanday Conventions</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      </head>
  <body class="composite">
    <div id="banner">
                    <span id="bannerLeft">
    
                                            <img src="." alt="" />
    
            </span>
                          <span id="bannerRight">
    
                                            <img src="./images/logo-home.png" alt="" />
    
            </span>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
    
            <div class="xleft">
        Last Published: 2010-01-21
                      </div>
            <div class="xright">      
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
    
                   <h5>General Info</h5>
            <ul>
              
    <li class="none">
                    <a href="index.html">NPanday Overview</a>
          </li>
              
    <li class="none">
                    <a href="release-notes.html">NPanday Release Notes</a>
          </li>
              
    <li class="none">
                    <a href="faqs.html">NPanday FAQs</a>
          </li>
              
    <li class="none">
                    <a href="workarounds.html">NPanday Workarounds</a>
          </li>
              
    <li class="none">
                    <a href="plugins/index.html">NPanday Plugins</a>
          </li>
              
    <li class="none">
              <strong>Conventions</strong>
        </li>
          </ul>
              <h5>Getting Started</h5>
            <ul>
              
                
              
      
            
      
            
      
              
        <li class="collapsed">
                    <a href="installation/index.html">Installation</a>
                </li>
              
                
              
      
            
      
              
        <li class="collapsed">
                    <a href="installation/uninstall.html">Uninstall NPanday</a>
                </li>
              
    <li class="none">
                    <a href="guide/build_tool.html">Using the Build Tool</a>
          </li>
              
    <li class="none">
                    <a href="guide/dependencies.html">Project Dependencies</a>
          </li>
              
    <li class="none">
                    <a href="guide/install_file.html">Installing Files Manually</a>
          </li>
              
    <li class="none">
                    <a href="guide/simple_project.html">Creating a Simple Project</a>
          </li>
              
    <li class="none">
                    <a href="guide/load_project.html">Loading Project/Solution</a>
          </li>
              
    <li class="none">
                    <a href="guide/quickstart.html">Quick Start</a>
          </li>
              
    <li class="none">
                    <a href="guide/portability.html">Portability</a>
          </li>
          </ul>
              <h5>IDE Integration</h5>
            <ul>
              
    <li class="none">
                    <a href="ide/execute_goals.html">Executing Maven Goals</a>
          </li>
              
    <li class="none">
                    <a href="ide/assembly_key.html">Setting Assembly Key</a>
          </li>
              
    <li class="none">
                    <a href="ide/remote_repo.html">Remote Repository</a>
          </li>
              
    <li class="none">
                    <a href="ide/settings.html">Using Custom Settings</a>
          </li>
              
    <li class="none">
                    <a href="ide/importing.html">Importing Projects</a>
          </li>
              
    <li class="none">
                    <a href="ide/artifacts.html">Repository Artifacts</a>
          </li>
              
    <li class="none">
                    <a href="ide/references.html">Project References</a>
          </li>
              
    <li class="none">
                    <a href="ide/web_references.html">Web References</a>
          </li>
              
                
              
      
            
      
              
        <li class="collapsed">
                    <a href="ide/release.html">Releasing Project</a>
                </li>
              
    <li class="none">
                    <a href="ide/test.html">Integration Test</a>
          </li>
          </ul>
              <h5>Project Information</h5>
            <ul>
              
    <li class="none">
                    <a href="..">NPanday Site</a>
          </li>
              
    <li class="none">
                    <a href="https://npanday.svn.codeplex.com/svn/" class="externalLink">NPanday SVN</a>
          </li>
              
    <li class="none">
                    <a href="http://maven.apache.org/" class="externalLink">Maven</a>
          </li>
              
    <li class="none">
                    <a href="http://www.mono-project.com/" class="externalLink">Mono Project</a>
          </li>
              
    <li class="none">
                    <a href="http://dotgnu.org/" class="externalLink">DotGNU</a>
          </li>
          </ul>
              <h5>Project Documentation</h5>
            <ul>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
                    <a href="project-info.html">Project Information</a>
                </li>
          </ul>
                                           <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>NPanday Conventions</h2>
<p>The following sections describe the conventions used within NPanday itself. This section is useful for developers wishing to contribute to NPanday, as well as developers looking for a baseline for their own projects. These conventions are evolving and subject to change as better ideas emerge: <a href="mailto:npanday@discussions.codeplex.com" class="externalLink"> Got better ideas?</a></p>
<ul><li>Artifact ID - specified within the pom - is equivalent to the project's module name.<p>Project Structure</p>
<div class="source"><pre> |-- NPanday.Artifact
 |   `-- main
 |       `-- csharp
 |           `-- NPanday
 |               `-- Artifact
 |                   `-- ArtifactContext.cs
 |                   `-- Artifact.cs
  `-- pom.xml</pre>
</div>
<p>pom.xml file</p>
<div class="source"><pre>&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;npanday.artifact&lt;/groupId&gt;
  &lt;artifactId&gt;NPanday.Artifact&lt;/artifactId&gt;
  &lt;packaging&gt;library&lt;/packaging&gt;
  &lt;version&gt;0.9&lt;/version&gt;
  &lt;name&gt;NPanday.Artifact&lt;/name&gt;
&lt;/project&gt;</pre>
</div>
</li>
<li>If the module does not contain children modules, the Group ID is the same as the artifact ID.<div class="source"><pre>&lt;project xmlns=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;npanday.artifact&lt;/groupId&gt;
  &lt;artifactId&gt;NPanday.Artifact&lt;artifactId&gt;
  &lt;packaging&gt;library&lt;/packaging&gt;
  &lt;version&gt;0.9&lt;/version&gt;
  &lt;name&gt;NPanday.Artifact&lt;/name&gt;
&lt;/project&gt;</pre>
</div>
</li>
<li>If a module contains children modules, the child module Group ID should either be equivalent to a pluralized parent module Group ID or be a deriviative of the parent module Group ID.<div class="source"><pre>parent Group ID: NPanday.Model
child Group ID: NPanday.Model, NPanday.Models or NPanday.Model.VSContent</pre>
</div>
</li>
<li>The directory structure of the source directory (typically src/main/csharp) will follow the same pattern as the group ID.<div class="source"><pre> |-- NPanday.Artifact
 |   `-- main
 |       `-- csharp
 |           `-- NPanday
 |               `-- Artifact
 |                   `-- ArtifactContext.cs
 |                   `-- Artifact.cs
  `-- pom.xml</pre>
</div>
<div class="source"><pre>&lt;project xmlns=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;npanday.artifact&lt;/groupId&gt;
  &lt;artifactId&gt;NPanday.Artifact&lt;artifactId&gt;
  &lt;packaging&gt;library&lt;/packaging&gt;
  &lt;version&gt;0.9&lt;/version&gt;
  &lt;name&gt;NPanday.Artifact&lt;/name&gt;
&lt;/project&gt;</pre>
</div>
</li>
<li>If an assembly will only compile under a specific platform, those values should be specified within the compiler-config.<div class="source"><pre> &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;npanday.plugins&lt;/groupId&gt;
  &lt;artifactId&gt;NPanday.Plugins&lt;/artifactId&gt;
  &lt;packaging&gt;pom&lt;/packaging&gt;
  &lt;version&gt;0.9&lt;/version&gt;
  &lt;name&gt;NPanday.Plugins&lt;/name&gt;
  &lt;build&gt;
    &lt;sourceDirectory&gt;src/main/csharp&lt;/sourceDirectory&gt;
    &lt;testSourceDirectory&gt;src/test/csharp&lt;/testSourceDirectory&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.dotnet.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-compile-plugin&lt;/artifactId&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;configuration&gt;
          &lt;vendor&gt;MONO&lt;/vendor&gt;
          &lt;frameworkVersion&gt;2.0.50727&lt;/frameworkVersion&gt;
          &lt;vendorVersion&gt;1.2.3.1&lt;/vendorVersion&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;</pre>
</div>
</li>
<li>Use the default setup within the npanday-settings.xml is to configure cross-platform builds.</li>
</ul>
</div>

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2010
    
          NPanday
          
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
